import scrapy
from umeituku.items import PicItem


class GreenSpider(scrapy.Spider):
    name = "green"
    allowed_domains = ["https://www.umei.cc"]  # 设置好限定的网站目标
    start_urls = ["https://www.umei.cc/bizhitupian/huyanbizhi/"]  # 更换起始页面

    def parse(self, response, **kwargs):
        div_list = response.xpath('//div[@class="item_list infinite_scroll"]/div')
        # //*[@id="infinite_scroll"]/div[3]/div[1]/div/a  //*[@id="infinite_scroll"]/div[3]/div[1]/div/a
        for div in div_list:
            href = div.xpath('./div[1]/div/a/@href').extract_first()
            print(response.urljoin(href))

            # 获取到新href后应该进行新的网络请求
            # 根据scrapy的运行原理，此处应该对获取的href进行处理，处理成一个请求交给引擎
            yield scrapy.Request(
                url=response.urljoin(href),  # 将resp的url与href拼接成一个完整的子页面链接 resp.urljoin(href)
                method="GET",
                callback=self.reparse  # 再创建一个reparse()处理子页面的请求
            )
        # spider爬虫考虑下一页的数据
        # <a href="/bizhitupian/huyanbizhi/index_2.htm">下一页</a>
        # 如果这里可以点下一页，数据的解析就是当前的parse()
        # a标签的内容contains（包含下一页的text）就是我想要的
        # next_href = response.xpath('//div[@id="pageNum"]/a[contains(text(), "下一页")]/@href').extract_first()
        # if next_href:
        #     # 如果下一页存在的话就发送 请求
        #     yield scrapy.Request(
        #         url=next_href,
        #         method="GET",  # 默认get
        #         callback=self.parse()
        #
        #     )

    def reparse(self, response, **kwargs):  # 处理子页面的请求
        resp = response
        print("--------处理子页面的请求---------\n")
        print(resp)

        return
        img_src = resp.xpath('//div[@class="big-pic"]/a/img/@src').extract_first()
        name = resp.xpath('//div[@class="wrapper clearfix imgtitle sut6552"]/h1/text()').extract_first()
        print("获取数据成功！")

        # 要把spider的数据传给管道需要一个数据结构 class UmeitukuItem(scrapy.Item)
        # 导入数据结构 from umeituku.items import UmeitukuItem
        item = PicItem()
        item['name'] = name
        item['pic_src'] = img_src
        yield item
